/* 
session 会话：保存状态的对象，和cookie有点类似，保存数据
session是只能服务端操作。存储在服务器端。只能服务端来进行操作。
session需要依赖cookie，需要通过cookie存储一个sessionid，所以如果人为的把cookie禁用了，那么session也失去效果。

*/

// 通过nodejs服务端操作session
// 1.设置session  2.获取session的值  3.删除session
const express = require("express");
let app = express();
// 基于一个第三方中间件  express-session 
// 1.需要安装 express-session 2.引入express-session ，配置session
let session = require("express-session");

app.use(session({
  name: "myid",// 设置sessionid 存储的cookie名称
  secret: 'mysecret', // 加密对象的时候需要的密码
  resave: true, // 有连接过来的时候 session会重新创建
  saveUninitialized: true, //  客户端的存放sessionid的cookie是否需要重新保存
  cookie: {  // 设置客户端 cookie存放sessionid的配置
    maxAge: 3600 * 1000,
    httpOnly: true
  }
}))



app.get("/setsession", (req, res) => {
  // 设置session的值, 通过 req来设置 session ，session存放在服务器，所以只能通过req来设置。
  req.session.username = "zhangsan";
  res.send("设置session11");
})

app.get("/getsession", (req, res) => {
  // 获取session的值
  console.log(req.session.username);
  res.send("hello" + req.session.username);
})

app.get("/delsession", (req, res) => {
  // 删除session
  req.session.destroy();
  res.send("删除session");
})


app.listen(8080);


/* 
总结： session 1.存session ，req.session.字段  =  “值”;
              2.获取 req.session.字段  ； （注意不要重启服务器，一旦重启session会重置）
              3.删除session ； req.session.destroy();
              4.session需要借助cookie来存放sessionid



*/